فرض کن داری به یه ساختمون نگاه میکنی. Inode مثل شماره پلاک خونهست (هر خونه یه شماره منحصربهفرد داره). Links تعداد درهای ورودی به اون خونهست. برای یه فایل معمولی، هر اسم یا لینک یه در ورودی حساب میشه. ولی برای یه دایرکتوری، تعداد لینکها یعنی تعداد راههای ورودی که شامل خودش، والدش و همه زیرشاخههاست. این چالش دقیقاً همینه: چرا یه دایرکتوری خالی ۵ تا لینک داره؟
در این چالش، با مفهوم Inode و Links (تعداد لینکها) در لینوکس آشنا میشوید. این مفاهیم برای درک عمیقتر سیستم فایل بسیار مهم هستند. با استفاده از دستور stat، اطلاعات دقیق یک فایل یا دایرکتوری را مشاهده میکنیم.
Inode (مخفف Index Node) یک ساختار داده در سیستم فایل است که همه اطلاعات مربوط به یک فایل (به جز نام آن) را ذخیره میکند. هر فایل یک Inode منحصربهفرد دارد.
Links تعداد نامهایی است که به یک Inode اشاره میکنند. برای دایرکتوریها، این عدد شامل . (خود دایرکتوری)، .. (دایرکتوری والد) و زیردایرکتوریها است.
work
توضیح: دایرکتوری work دارای دو زیرشاخه F1 و F2 است. هر کدام از اینها نیز زیرشاخههای خود را دارند.
stat work
توضیح: خروجی stat نشان میدهد که Links: 5 است. سؤال اصلی این است: چرا تعداد لینکها ۵ است در حالی که هیچ فایلی زیر work لینک نشده است؟
تعداد لینکهای یک دایرکتوری به این صورت محاسبه میشود:
تعداد لینکها = 2 + تعداد زیرشاخههای مستقیم
.) و یکی برای دایرکتوری والد (..).. به دایرکتوری والد اضافه میکند.
در دایرکتوری work، سه زیرشاخه مستقیم وجود دارد:
F1F2
اما در ساختار بالا، work فقط دو زیرشاخه دارد (F1 و F2). پس چرا Links=5 است؟
در تصویر اولیه، tree work نشان داد که work سه زیرشاخه دارد: F1، F2 و F3. اما در تصویر دوم فقط دو تا نشان داده شده است.
پس Links=5 به این معنی است که work دقیقاً ۳ زیرشاخه مستقیم دارد:
.) ← ۱ لینک..) ← ۱ لینکمجموع = ۱ + ۱ + ۳ = ۵
اگر دایرکتوری test را با mkdir test بسازید (بدون زیرشاخه)، تعداد لینکهای آن ۲ خواهد بود:
.)..)
اگر یک زیرشاخه به نام dir1 در آن بسازید، تعداد لینکها به ۳ افزایش مییابد.
ls -liتوضیح: ستون اول (11278129) Inode و ستون دوم تعداد لینکها (5) را نشان میدهد.
یک دایرکتوری با نام test_links بسازید. سپس داخل آن سه زیرشاخه ایجاد کنید. با stat تعداد لینکها را بررسی کنید.
دستورات خود را بنویسید:
توضیح: تعداد لینکها ۵ است: ۱ (خود دایرکتوری) + ۱ (والد) + ۳ (زیرشاخهها) = ۵
stat: برای مشاهده اطلاعات کامل یک فایل یا دایرکتوری.ls -li: نمایش Inode و تعداد لینکها.